<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>04.js中的类型解释</title>
    <script>
      /*
      1. null 和 undefined 本质都是一样的
         null 能做运算  表示 0 
         undefined  不能做运算符
      2. boolean类型的底层就是 0 false 和 1 true

      3. 在三元运算符
          boolean表达式 ? 结果a : 结果b
        java：三元运算符必须有变量接收 
              结果a和结果b 以及接收的变量类型都要保持一致
              boolean表达式  最终的返回结果 一定是true或者是false
        js：可以有返回值 也可以没有 
            结果a和结果b 可以不一样的
            js 中所有的boolean表达式都可以进行隐式转换

     js  ==   只比较变量的值是否相等
         ===  比较变量的值和类型是否相等

       4. && 和  || 的操作
       java中  A && B  A和B 必须是boolean值或者表达式  返回的结果也必须是 boolean类型
       js 中   A && B   A如果是false 直接返回A  否则返回B
               A || B   A如果是true  直接返回A  否则返回B
         1. A 和 B boolean表达式 也具有隐式转换的特点
         2. 返回的结果并非是boolean值 而是 A 和B 本身

      */
     console.log(null == undefined); // true
     console.log(null === undefined);  // false
     console.log(0 == false); // true
     console.log(1 == true); // true
     console.log(0 === false);  // false
     console.log(1+null); // 1
     console.log(1+undefined); // NaN  not a number 不是数字
     console.log("=================================================");
     // boolean 表达式 什么表示true 什么表示 false
     /*
      数字类型: 0 
      字符串 : 空
      null undefined 都表示false
     */ 
     console.log(0 ? "真" : "假");
     console.log(!0 ? "真" : "假");
     console.log(1-1 ? "真" : "假");

     console.log("" ? "真" : "假");
     console.log(" " ? "真" : "假"); // 真
     console.log(null ? "真" : "假");
     console.log(undefined ? "真" : "假");

     // 面试 如果将一个数据的类型转为boolean类型  前面添加两个！
     console.log(!!0);  // false
     console.log(!!" ");
     console.log("==================================================");

     console.log(false && true); // false
     console.log( 0 && true); // 0
     console.log( "abc" && 123); // 123

     console.log(true || false); // true
     console.log(0 || 123); // 123
     console.log("abc" || 123); // abc
     console.log("==================================================");
     // 想为一个数值赋值默认值
     var num=null;
     // 三运运算符的写法
     // num = num ? num : 0
     // || 写法
     num = num || 0
     console.log(num);

    </script>

</head>
<body>

    
</body>
</html>